1. Field of the Invention
This invention relates to the distribution and installation of maintenance updates of software products and more particularly relates to distributing and intelligently installing updates to software products without destroying user and developer customizations of already installed software products.
2. Description of the Related Art
Many software applications comprise “object code only” portions as well as text portions. The object code only or OCO portion of a software application is formatted to control the operation of a CPU (central processing unit) or other hardware device. The OCO portion is generally readable only by a computing device and not by humans. Likewise, the OCO portion is not easily modifiable by humans. In contrast, text portions of a software application may be readable and modifiable by human users, operators, and system administrators.
Software developers frequently use a compiler to translate a high level programming language into a compiled and executable OCO module. Software developers may also provide text modules to be read, interpreted, and manipulated by the OCO module. For example, an OCO module in an accounting software package may generate a profit and loss report. The OCO module may read a text file containing the name of the company and the federal tax identifier associated with the company and use these values to create the profit and loss report. The user of the accounting software package may modify the text file to update the name of the company and the federal tax identifier. The user may also insert headings into the text file that the OCO module may integrate into the final report.
The developers of the account software package may create text files to be stored on the user's computer that the OCO module will also incorporate into the final report. The developer text files may also be human readable files.
At some point, the manufacturer of the software package may ship a maintenance update for the software package. The maintenance update may comprise a replacement OCO module as well as replacement text files. Unfortunately, the maintenance update may overwrite the user customizations and the developer customizations contained in modified text files. The customizations may be lost and need to be reentered in the new files created by the maintenance update.
From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method that preserve user and developer customizations while allowing updates to OCO modules and associated non-OCO components, in a software package. Beneficially, such an apparatus, system, and method would allow users and developers to customize a software application without having to reenter customizations following the integration of a maintenance update.